// 2025/4/7
// 最长无重复子数组

class Solution {
    public:
        /**
         * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
         *
         * 
         * @param arr int整型vector the array
         * @return int整型
         */
        int maxLength(vector<int>& arr) {
            // write code here
            unordered_set<int> cnt;
            int left = -1, right = -1, n = arr.size();
            int ans = 0;
            while(right < n - 1)
            {
                if(!cnt.count(arr[++right]))
                {
                    cnt.insert(arr[right]);
                    ans = max(ans, right - left);
                }
                else
                {
                    while(arr[++left] != arr[right])
                    {
                        cnt.erase(arr[left]);
                    }
                }
            }
            return ans;
        }
    };